package com.bluemson.dao;

import com.bluemson.entity.*;

/**
 * @author mac
 */
public interface UserDao {
    /**
     * 注册用户
     * @param user
     */
    void addUser(User user);

    /**
     * 检查是否有重名的用户
     * @param user
     * @return
     */
    User checkUsername(User user);

    /**
     * 检查登录密码用户名是否匹配
     * @param user
     * @return
     */
    User checkUser(User user);

    /**
     * 更新为登录状态
     * @param username
     */
    void loginStatus(String username);

    /**
     * 上传帖子
     * @param article
     */
    void addArticle(Article article);

    /**
     * 获得最新添加的帖子id
     * @return
     */
    int getArticleId();

    /**
     * 给帖子添加附加文件
     * @param article
     */
    void addFile(Article article);

    /**
     * 添加帖子图片（未使用）
     * @param articleImg
     */
    void addArticleImg(ArticleImg articleImg);

    /**
     * 给用户添加/更新头像
     * @param user
     */
    void addHead(User user);

    /**
     * 添加评论
     * @param comment
     */
    void addComment(Comment comment);

    /**
     * 回复评论
     * @param comment
     */
    void addReply(Comment comment);

    /**
     * 给帖子点赞
     * @param id
     */
    void like(int id);

    /**
     * 检查是否已经点过赞
     * @param article
     * @return
     */
    String checkLike(Article article);
    /**
     * 添加用户帖子点赞关系
     * @param article
     */
    void likeArticle(Article article);

    /**
     * 关注板块
     * @param concern
     */
    void concernPlate(Concern concern);

    /**
     * 增加关注该板块的数量
     * @param concern
     */
    void concernUser(Concern concern);

    /**
     * 增加板块帖子数量
     * @param plate
     */
    void articleCount(String plate);
    /**
     * 检查是否已关注该板块
     * @param concern
     * @return
     */
    Concern checkConcern(Concern concern);

    /**
     * 退出登录状态
     * @param user
     */
    void exitStatus(User user);

    /**
     * 增加帖子评论数量
     * @param articleId
     */
    void comment(int articleId);
}
